//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlinx.coroutines.runBlocking
//import kotlin.concurrent.AtomicReference
//
//// 不可变数据类（通过 AtomicReference 原子替换）
//data class User(val id: Int, val name: String, val score: Int)
//
//fun main() = runBlocking(Dispatchers.Default) {
//    // 初始化跨平台 AtomicReference（无需 freeze）
//    val atomicUser = AtomicReference(
//        User(id = 1, name = "初始用户", score = 0)
//    )
//
//    // 3 个并发协程原子更新用户信息
//    repeat(3) { threadIndex ->
//        launch {
//            println("线程${threadIndex}开始更新用户信息")
//
//            // 新版 AtomicReference 无内置 updateAndGet，用 compareAndSet 实现原子更新（循环重试）
//            var current: User
//            var newUser: User
//            do {
//                current = atomicUser.value // 获取当前值（原子操作）
//                // 计算新值：修改 name 和 score
//                newUser = current.copy(
//                    name = "用户_线程${threadIndex}",
//                    score = current.score + 10 * (threadIndex + 1)
//                )
//                // 原子替换：只有当前值仍为 current 时才更新（失败则重试）
//            } while (!atomicUser.compareAndSet(current, newUser))
//
//            // 原子获取最新值
//            val latestUser = atomicUser.value
//            println("线程${threadIndex}更新后：$latestUser")
//        }
//    }
//
//    delay(100)
//    println("\n最终用户信息：${atomicUser.value}")
//}